package com.itheima.controller;

import com.itheima.pojo.Result;
import com.itheima.utils.AliOSSUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

@RestController
@Slf4j
public class UploadController {

    @Autowired
    private AliOSSUtils aliOSSUtils;

     @PostMapping("/upload")
    public Result upload(MultipartFile image) throws IOException {
         log.info("上传的文件信息:{}",image);
         // 找到AliOSSUtils  --  因为被spring管理 可以从spring中要
         String url = aliOSSUtils.upload(image);
         return Result.success(url);
     }


//    /*
//      简单参数 跟以前接收方式一样
//      文件参数 文件是文件 二进制组成的一堆儿数据
//        springboot - 包含 springmvc-- 二进制文件 转换成一个特殊文件对象
//     */
//    @PostMapping("/upload")
//    public Result upload(String username, Integer age, MultipartFile image) throws IOException {
//
//        log.info("文件上传 image:{}",image);
//        // 文件信息 在哪里？  MultipartFile image
//        //  String getOriginalFilename(); 获取文件原始的文件名
//        String originalFilename = image.getOriginalFilename();
//        log.info("得到原始的文件名:"+originalFilename);
//        // 因为 有可能不同人上传文件的名字一样 都想保留 怎么办呢 让它们的名字尽可能的不重复
//        // 帅.照.jpg    ==  kshkahakhaihsuishus1i2.jpg
//        // 怎么获取后缀名
////        originalFilename.lastIndexOf(".");//获取 最后一个.的索引
//        int lastIndexOf = originalFilename.lastIndexOf(".");
//        String houzhuiming = originalFilename.substring(lastIndexOf);//字符串截取 从指定位置截到最后
////        UUID.randomUUID().toString()
//         // java工具包中 有个工具UUID 里面有一个 可生成 随机 字符串的方法 randomUUID()  32位字符和四个-组成的 随机数  保证在当前服务器上  数据不会重复
//        String newName = UUID.randomUUID().toString()+houzhuiming;
//
//        log.info("查看新名字:"+newName);
//
//        //  存哪里呢？ 服务器位置上  D:\\upload\\img  + 文件名
////        image.transferTo(新文件的位置);  新文件位置  就是存储到 服务器的 哪个目录下 哪个文件
//        File deskFile = new File("D:\\upload\\img", newName);
//        image.transferTo(deskFile);
//        return Result.success("图片上传后的访问地址");
//    }
}
